In a client-server application, a client device is connected to a server computer over a network. Tasks of the application may be divided between the client device and the server computer. For example, the client device can request a page from the server computer, and the page can be displayed on the client device. The experience of the user of the client device may vary depending on the quality of the network connection. Network connection quality can vary depending on many factors including geographic location of the user, network characteristics, network topology, and network loading. For example, cellular network connection quality varies around the globe. In some countries, such as India and China, 3G and 4G cellular technology has not been deployed broadly. Even in the United States, available bandwidth and latency can vary based on a total number of users connected to the same cell, signal attenuation due to man-made structures, and/or a carrier's backhaul bandwidth.
As one example of how the network bandwidth and latency can directly impact the customer's experience, the client device can be a mobile device running an application that provides an interface to an on-line store running on the server computer. When the client application is started, a gateway page including dozens of images may be transmitted from the server computer and loaded onto the client device for display. If the gateway page is encoded in 300 kilobytes of data and the mobile device is connected by a cellular connection at a bandwidth of 30 kilobytes per second, then the user will have to wait at least 10 seconds for the page to fully load and render on the mobile device.
Current solutions to improve the user's experience include compressing the information sent by the server computer and using caching on the client device. However, compression does not help with non-compressible data, such as images, and caching does not help with data the client device has not seen before. An alternative solution is to provide different builds optimized for local bandwidth for countries such as China and India. However, there may be increased costs associated with maintaining the separate builds.